In the field of computer hardware and software technology, the use and deployment of virtual machines has become increasingly common. Virtual machines can generally be considered software implementations of physical computing systems. Data within a specialized data volume is processed by the hypervisors to instantiate a virtual machines. The virtual machines can then run their own operating systems, applications files, and the like. From the perspective of those applications, the virtual machines appear as if they are real machines.
In many implementations, snapshots or derivative versions of the data volume may be accessed and modified. At times, snapshot or derivative version of the data volume may be created due to the access requests or modifications. However, at some point the snapshot needs to be collapsed back into the original data volume. Unfortunately, the input/output operations related to collapsing snapshots can be high cost from a performance perspective, reducing the efficiency and benefits of virtual machine environments.
Overview
This overview is provided to introduce a selection of concepts in a simplified form that are further described below in the Technical Disclosure. It should be understood that this Overview is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter
Disclosed are systems, methods, and software for merging an ancestor data volume and a derivative version of the ancestor data volume. In an embodiment, a method of collapsing derivative versions of ancestor data volumes comprises, responsive to an instruction to collapse a derivative version of an ancestor data volume into the ancestor data volume, determining if a characteristic of the derivative version of the ancestor data volume satisfies a criteria relative to a characteristic of the ancestor data volume. If the characteristic of the derivative version satisfies the criteria, merging the ancestor data volume into the derivative version of the underlying data to form an updated derivative version and establishing the updated derivative version as the ancestor data volume.
In an embodiment, a computer readable medium has stored therein program instructions executable by a computer system for collapsing derivative versions of ancestor data volumes, that when executed by the computer system, direct the computer system to, responsive to an instruction to collapse a derivative version of an ancestor data volume into the ancestor data volume, determine if a characteristic of the derivative version of the ancestor data volume satisfies a criteria relative to a characteristic of the ancestor data volume, and if the characteristic of the derivative version satisfies the criteria, merge the ancestor data volume into the derivative version of the underlying data to form an updated derivative version and establish the updated derivative version as the ancestor data volume.
In an embodiment, a data control system for collapsing derivative versions of ancestor data volumes comprises a processing system and a non-transitory storage system. The processing system is configured to execute program instructions directing the processing system to, responsive to an instruction to collapse a derivative version of an ancestor data volume into the ancestor data volume, determine if a characteristic of the derivative version of the ancestor data volume satisfies a criteria relative to a characteristic of the ancestor data volume, and if the characteristic of the derivative version satisfies the criteria, merge the ancestor data volume into the derivative version of the underlying data to form an updated derivative version and establish the updated derivative version as the ancestor data volume. The non-transitory storage system has the program instructions stored thereon.
In an embodiment, the derivative version corresponds to only a first portion of the ancestor data volume and the criteria comprises whether or not a size of the derivative version is greater than a size of a remaining portion of the ancestor data volume that does not include the first portion of the ancestor data volume.
In an embodiment, the size of the derivative version of the ancestor data volume does not include unallocated portions of the derivative version of the ancestor data volume.
In an embodiment, merging the ancestor data volume into the derivative version to form the updated derivate version comprises copying only portions of the ancestor data volume not yet represented in the derivative version into the derivative version.
In an embodiment, merging the ancestor data volume into the derivative version of the underlying data to form the updated derivative version and establishing the new derivative version as the ancestor data volume comprises altering meta data from pointing to portions of a underlying data volume as containing the ancestor data volume to pointing to a subset of the portions of the underlying data volume and additional portions of the underlying data volume as containing the derivative version.
In an embodiment, the ancestor data volume comprises a virtual disk file having a virtual machine stored therein.
In an embodiment, the derivative version of the ancestor data volume comprises a snapshot of the virtual disk file.
In an embodiment, if the derivative version does not satisfy the criteria, the derivative version is merged into the ancestor data volume.